package com.atugigu.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


/**
 * 拦截器;
 * Spring MVC 的拦截器类似于 Servlet  开发中的过滤器 Filter，用于对处理器进行预处理和后处理。
 * 将拦截器按一定的顺序联结成一条链，这条链称为拦截器链（Interceptor Chain）。
 * 在访问被拦截的方法或字段时，拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。
 * <p>
 * 拦截器和过滤器区别:
 * 使用范围
 * 过滤器:是 servlet 规范中的一部分，任何 Java Web 工程都可以使用
 * 拦截器: 是 SpringMVC 框架自己的，只有使用了 SpringMVC 框架的工程才能用
 * <p>
 * 拦截范围
 * 过滤器: 在 url-pattern 中配置了/*之后，可以对所有要访问的资源拦截
 * 拦截器: 只会拦截访问的控制器方法，如果访问的是 jsp，html,css,image 或者 js 是不会进行拦截的
 * <p>
 * 自定义拦截器
 * 1. 创建拦截器类实现HandlerInterceptor接口
 * 2. 配置拦截器
 * 3. 测试拦截器的拦截效果
 */
@Controller
@RequestMapping("/user")
public class UserController6 {

    /**
     * 测试自定义拦截器
     * @return
     * 测试地址:
     */
    @RequestMapping("/testInterceptor")
    public ModelAndView testInterceptor() {
        System.out.println("目标资源执行......");
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("name","测试自定义拦截器...");
        modelAndView.setViewName("success");
        return modelAndView;
    }
}
